package main

// 空白标识符 _ 也被用于抛弃值
// _ 实际上是一个只写变量，你不能得到它的值。
// 这样做是因为 Go 语言中你必须使用所有被声明的变量，但有时你并不需要使用从一个函数得到的所有返回值。
// 并行赋值也被用于当一个函数返回多个返回值时，
// 比如这里的 val 和错误 err 是通过调用 Func1 函数同时得到：val, err = Func1(var1)。

func Func1(var1 int) (int, string) {
	val, err := var1+1, "abandon!!!"
	return val, err
}

/*
如果你想要交换两个变量的值，则可以简单地使用 a, b = b, a
*/

func main() {
	a, b := 1, 2
	a, b = b, a
	println(a, b) // output: 2 1
	c, _ := Func1(a)
	println(c) //output: 2
}

/*
// 2.你声明了一个局部变量却没有在相同的代码块中使用它，同样会得到编译错误
import "fmt"
func main() {
	var a string = "abc"//a declared but not used
	fmt.Println("hello, world")
}
*/

/*
// 1.在相同的代码块中，我们不可以再次对于相同名称的变量使用初始化声明
// no new variables on left side of :=
func main() {
	var a, b int = 1, 2
	a:= 20
}
*/
